#Область ОписаниеПеременных

&НаКлиенте
Перем Прототипы;// Соответствие

#КонецОбласти

#Область СлужебныеПроцедурыИФункции

#Область СлужебныйПрограммныйИнтерфейс

&НаКлиенте
Процедура Инициализировать() Экспорт

	Прототипы = Новый Соответствие;

КонецПроцедуры

&НаКлиенте
Процедура ЗакрытьВсеФормы() Экспорт

	Для Каждого Форма Из Прототипы Цикл
		ТекущаяФорма = Прототипы.Получить(Форма.Ключ);
		Если ТекущаяФорма.Открыта() Тогда
			ТекущаяФорма.Закрыть();
		КонецЕсли;
	КонецЦикла;

КонецПроцедуры

&НаКлиенте
Процедура ОткрытьПрототип(ТекущиеДанные, РодительскаяФорма, Показать = Истина) Экспорт

	ТекущийПрототип = ПолучитьТекущийПрототип(ТекущиеДанные, РодительскаяФорма);
	Если Показать Тогда
		ТекущийПрототип.Открыть();
	КонецЕсли;

КонецПроцедуры

&НаКлиенте
Процедура АктивизироватьТекущийЭлемент(Идентификатор, ИмяЭлемента) Экспорт

	ТекущийПрототип = Прототипы.Получить(Идентификатор);
	Если ТекущийПрототип.Открыта() Тогда
		ТекущийПрототип.Открыть();
		ТекущийПрототип.АктивизироватьТекущийЭлементУправления(ИмяЭлемента);
	КонецЕсли;

КонецПроцедуры

&НаКлиенте
Процедура ДобавитьЭлементУправления(СпециальныеСвойства, ТиповыеСвойства, Связать, Перемещение) Экспорт

	ТекущийПрототип = Прототипы.Получить(СпециальныеСвойства.Идентификатор);
	ТекущийПрототип.НарисоватьЭлементУправления(Тип(СпециальныеСвойства.Тип),
												СпециальныеСвойства,
												ТиповыеСвойства,
												Связать,
												Перемещение);

КонецПроцедуры

&НаКлиенте
Процедура ПереместитьЭлементУправления(ДанныеПеремещения) Экспорт

	ТекущийПрототип = Прототипы.Получить(ДанныеПеремещения.Идентификатор);
	ТекущийПрототип.ПереместитьЭлементУправления(ДанныеПеремещения);

КонецПроцедуры

&НаКлиенте
Процедура УдалитьФорму(Идентификатор) Экспорт

	ТекущийПрототип = Прототипы.Получить(Идентификатор);
	Если ТекущийПрототип.Открыта() Тогда
		ТекущийПрототип.Закрыть();
	КонецЕсли;

	Прототипы.Удалить(Идентификатор);

КонецПроцедуры

&НаКлиенте
Процедура УдалитьЭлементУправления(Идентификатор, ИмяЭлемента, ИмяРеквизита, ЭтоКоманда, ЭтоКолонка = Ложь,
	ИмяТаблицы = "") Экспорт

	ТекущийПрототип = Прототипы.Получить(Идентификатор);
	ТекущийПрототип.СтеретьЭлементУправления(ИмяЭлемента, ИмяРеквизита, ЭтоКоманда, ЭтоКолонка, ИмяТаблицы);

КонецПроцедуры

&НаКлиенте
Процедура ИзменитьСвойство(Идентификатор, Свойство, Значение, ЭтоФорма = Истина, Элемент = "") Экспорт

	ТекущийПрототип = Прототипы.Получить(Идентификатор);
	ТекущийПрототип.ИзменитьСвойствоЭлементаУправления(Свойство, Значение, ЭтоФорма, Элемент);

КонецПроцедуры

&НаКлиенте
Процедура СоздатьИзменитьРеквизит(Идентификатор, СпециальныеСвойства) Экспорт

	ТекущийПрототип = Прототипы.Получить(Идентификатор);
	ТекущийПрототип.СоздатьИзменитьРеквизит(СпециальныеСвойства);

КонецПроцедуры

#КонецОбласти

&НаКлиенте
Функция ПолучитьТекущийПрототип(ТекущиеДанные, РодительскаяФорма)

	Результат = Прототипы.Получить(ТекущиеДанные.Идентификатор);
	Если Результат = Неопределено Тогда
		Результат = ПолучитьФорму("Обработка.УИ_РедакторПрототиповФорм.Форма.Прототип",
								  ,
								  РодительскаяФорма,
								  ТекущиеДанные.Идентификатор);
		Результат.ЗакрыватьПриЗакрытииВладельца = Истина;
		Результат.Автозаголовок = Ложь;
		Результат.Заголовок = ТекущиеДанные.Заголовок;

		Прототипы.Вставить(ТекущиеДанные.Идентификатор, Результат);
	КонецЕсли;

	Возврат Результат;

КонецФункции

#КонецОбласти